自己写Android.mk来生成Jar包 | 您所在的位置:网站首页 › jar package › 自己写Android.mk来生成Jar包 |
创建Android.mk文件和Java类: Parent.java Child.java 我强调庆闭者一点:态磨 Java类的package name并不是必须与所在文件夹一致,习惯上写誉薯成一致。 Android.mk javalib.jar即为编译后可用的jar包。 在Linux下,可以通过Makefile来对源码工程进行管理,Android.mk文件是Makefile的一小部分,它用来对Android程序进行编译。Android.mk文件中描述了哪些C文件将被编译且指明了如何编译。Android.mk文件用来告知NDK Build 系统关于Source的信息。 1、编译可执行程序 2、编野昌译动态库或静态库 3、预编译文件(APK或Java库) 以上三种是Android.mk的主要用法,我们写mk文件时也就是以上三种目的。
首先看一个最简单的Android.mk的例子: 讲解: 每个Android.mk文件必须以定义 LOCAL_PATH 为开始。它用于在开发tree中查找源文件。 宏 my-dir 由Build System提供。返回包含Android.mk的目录路径。 CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx. 例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理 LOCAL_PATH . 这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。 LOCAL_MODULE 模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。 Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。 LOCAL_SRC_FILES变量必须包含将要打包如模块的C/C++ 源码。 不必列出头文件,build System 会自动帮我们找出依赖文件。 缺省的C++源码的扩展名为.cpp. 也可以修改,通过LOCAL_CPP_EXTENSION。 BUILD_SHARED_LIBRARY:是Build System提供的一个变量,指向一个GNU Makefile Script。 它负责收集自从上次调用include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。 BUILD_STATIC_LIBRARY:编译为静态库。 BUILD_SHARED_LIBRARY :编译为动态库 BUILD_EXECUTABLE:编译为Native C可执行程序 BUILD_PACKAGE(既可以编apk,也可以编资竖洞源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true) BUILD_JAVA_LIBRARY(Java共享库) BUILD_STATIC_JAVA_LIBRARY(java静态库)
Android源码中有大量的mk文颂纤扒件,Android系统的编译就是靠着这些mk文件的,所以学好是非常有必要的哦! 在Ubutu上编译出来的.so文件,怎么添加到Android项目中去使用呢?目前:可以通过Makefile方式和CMake方式桥物梁引入预编译静动态库(静态库.a 动态库.so)到项目中去使用。就目前而言CMake是Goole推荐使用方式,但是加入接手一个老的NDK项目是MakeFile方式,看不懂就GePi了,所以这里我们还是介绍一下MakeFile方式将静动态库加入到AS中,完成NDK项目的开发。废话不多说,直接撸步骤了:
1、在src/main目录下创建一个ndkBuild文件夹 2、在此文件中创建一个Android.mk文件
3、在此文件中创建一个test.c的源文件蚂者
4、将编译好的的.so库复制到src/main目录下 如图所示目录结构:
1、编辑Android.mk文件
2、编辑grade(app)文件
3、编辑test.c文件
4、使用编译好的.so库里面的函数
本结果运行在Android 5.1 系统上
再次运行在Android8.0系统上
看以清楚知道,其实我们的APK包里面就没有libMainTest.so库,所以APP在8.0上会出现奔溃的现象。so...
1、在src/main目录下创建一个cmake文件夹 include:里面包含需要一些头文件 cmakeTest.c:需要编译的源文件 2、在app目录下创建一个文件:CmakeLists.txt
3、编辑grade(app)
4、编辑cmakeTest.c文敏运件
4、引用编译好的libcmakeTest.so
Android 8.0.0系统:
Android 5.1.1系统: 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/tougao/8211182.html |
CopyRight 2018-2019 实验室设备网 版权所有 |